;
(function () {
    function zdytable(options) {
        this._init(options);
    }
    $.extend(zdytable.prototype, {
        _init: function (options) {
            var self = this;
            self.options = {
                zdytable: ".surface_table",
                progress: ".progress",
                tablehead: ".table-head",
                tablebody: ".table-body"
            }
            $.extend(true, self.options, options || {});
            self.initDom();
            return self;
        },
        initDom: function () {
            var opt = this.options;
            this.$zdytable = $(opt.zdytable);
            this.progress = opt.progress;
            this.tablehead = opt.tablehead;
            this.tablebody = opt.tablebody;
            this.composing(this.$zdytable);
            this.windowscroll(this.$zdytable);
            this.click(this.$zdytable)
        },
        composing: function (tablelist) {
            var self = this;
            var num = tablelist.length;
            $(this.progress).find(".progress-bar").attr("style", "width: 40%")
            tablelist.each(function () {
                // 获取表单body第一行元素，要根据第一个或者最后一个的tr下面每一个td宽度来设置表头th的对应宽度
                var tr = $(this).find(self.tablebody).find(".table>tbody>tr").first()
                self.tr = tr;
                // 设置表头和表身的宽度一致
                $(this).find(self.tablehead).find(".table")
                    .width($(this).find(self.tablebody).find(".table").width());
                self.eachtdw(this);
                self.tablescroll(this);
            });
            $(this.progress).find(".progress-bar").attr("style", "width: 80%")
            return self;
        },
        // 循环表身的每列td宽度，并且赋值给对应的表头th设置最小宽度
        eachtdw: function (table) {
            var self = this;
            $(self.tr).find("td").each(function (index, val) {
                var w = $(val).outerWidth();
                $($(table).find("thead>.table-h>th").eq(index)).css("minWidth", w + "px");
            });
            $(this.progress).find(".progress-bar").attr("style", "width: 100%")
            return self;
        },
        //表格横向滚动
        tablescroll: function (table) {
            var self = this;
            $(table).find(".table-body").scroll(function () {
                var sw = $(table).find(".table-body").scrollLeft();
                $(table).find(".table-head").scrollLeft(sw)
            });
            return self;
        },
        // 窗口滚动
        windowscroll: function (tablelsit) {
            $(window).scroll(function () {
                tablelsit.each(function (key, val) {
                    var winscroll = $(window).scrollTop();
                    var table_h = $(val).offset().top;
                    $(val).find(".table-head").width($(val).find(".table-body").width());
                    if (winscroll > table_h) {
                        if (!$(val).find(".table-head").hasClass("fixed_table_head")) {
                            $(val).find(".table-head").addClass("fixed_table_head");
                        }
                    } else {
                        if ($(val).find(".table-head").hasClass("fixed_table_head")) {
                            $(val).find(".table-head").removeClass("fixed_table_head");
                        }
                    }
                })
            })
        },
        click: function (table) {
            var YN = false;
            var startX = 0;
            var lastX = 0; //结束位置
            var sm = 0;
            $(table).find(".table-head").mousedown(function (e) {
                startX = e.clientX ;
                this.setCapture && this.setCapture(); //避免IE下拖拽过快鼠标失去对象  
                YN = true;
                sm = $(table).find(".table-body").scrollLeft();
                return false;
            })
            $(table).find(".table-head").mousemove(function (e) {
                if (YN) {
                    lastX = (e.clientX - startX)*-1;
                    var val = sm+lastX;
                    $(this).scrollLeft(val)
                    $(table).find(".table-body").scrollLeft(val);
                }
            })
            $(table).find(".table-head").mouseup(function (e) {
                YN = false;
                return false;
            })
            $(table).mouseup(function (e) {
                YN = false;
                return false;
            })
        }

    })
    window.zdytable = zdytable;
})()